# Reopen a closed report

Reopens a previously resolved or dismissed report for further investigation. This sets the state back to 'open', clears assignment, and clears action taken fields. Useful when initial resolution was insufficient or new information becomes available.

RBAC:
- requires ANY of Reports.Manage, GroupReports.Manage

Endpoint: POST /api/v1/admin/reports/{reportId}/reopen
Version: 1.0
Security: header

## Path parameters:

  - `reportId` (string, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

## Query parameters:

  - `scope` (string,null)
    Group scope. Omit for server scope
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

## Response 200 fields (application/json):

  - `id` (string, required)
    Internal report ID
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `uri` (string, required)
    Report URI

  - `targetId` (string, required)
    Target being reported (post, user, or group TypeId)
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `groupId` (string,null, required)
    Report scope.
            If null the scope is global (server admins handle it).
            If set the scope is group (group admins handle it).
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `state` (string, required)
    Current state of the report
    Enum: "OPEN", "UNDER_REVIEW", "DISMISSED", "RESOLVED"

  - `assignedUserId` (string,null, required)
    Moderator assigned to handle the report
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `actionTakenBy` (string,null, required)
    Moderator who took action on the report
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `actionTakenAt` (string,null, required)
    When action was taken on the report
    Example: "2022-03-10T16:15:50Z"

  - `forwarded` (boolean, required)
    Whether this report was forwarded via ActivityPub

  - `notes` (array)
    Internal admin notes

  - `notes.userId` (string, required)
    User who added the note
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `notes.note` (string, required)
    Note text

  - `notes.createdAt` (string, required)
    When the note was added
    Example: "2022-03-10T16:15:50Z"

  - `notes.user` (object,null)
    User who added the note (populated)

  - `notes.user.id` (string, required)
    internal id of this user
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `notes.user.username` (string, required)
    unique user name
    Example: "john_smith"

  - `notes.user.domain` (string, required)
    User's domain
    Example: "wlsly1.net"

  - `notes.user.local` (boolean, required)
    Whether this user is local to this server

  - `notes.user.displayName` (string, required)
    full name of the user
    Example: "John Smith"

  - `notes.user.uri` (string, required)
    URI of this user
    Example: "https://wlsly1.net/users/john_smith"

  - `notes.user.avatar` (object,null)
    User's avatar

  - `notes.user.avatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `notes.user.avatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `notes.user.avatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `notes.user.avatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `notes.user.avatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `notes.user.avatar.meta` (object)
    Meta data

  - `notes.user.avatar.meta.blurhash` (string,null)

  - `notes.user.avatar.meta.name` (string,null)

  - `notes.user.avatar.meta.altText` (string,null)

  - `notes.user.avatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `notes.user.avatar.files` (array, required)
    List of all the files this upload has

  - `notes.user.avatar.files.uri` (string,null, required)
    Full url of the file

  - `notes.user.avatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `notes.user.avatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `notes.user.avatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `notes.user.avatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `notes.user.avatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `notes.user.avatar.files.meta.width` (integer,null)
    Media width

  - `notes.user.avatar.files.meta.height` (integer,null)
    Media height

  - `notes.user.avatar.files.meta.codec` (string,null)
    Video codec

  - `notes.user.avatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `notes.user.avatar.files.size` (integer, required)
    File size in bytes

  - `notes.user.avatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `notes.user.avatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `notes.user.avatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `notes.user.avatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `notes.user.avatar.error` (string,null)
    Upload processing error

  - `notes.user.avatar.cached` (boolean)
    true if cached

  - `notes.user.avatar.logs` (string,null)
    Logs

  - `notes.user.avatar.remote` (boolean)
    true if this upload is remote

  - `notes.user.avatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `notes.user.avatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `notes.user.createdAt` (string, required)
    User's creation time
    Example: "2022-03-10T16:15:50Z"

  - `notes.user.state` (string, required)
    User's moderation state
    Enum: "REGULAR", "SENSITIVE", "LIMITED", "SUSPENDED"

  - `notes.user.relationship` (object,null)
    Relationship with this user

  - `notes.user.relationship.following` (string,null)
    Does the viewer follow the target?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `notes.user.relationship.followed` (string,null)
    Does the target follow the viewer?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `notes.user.relationship.blocked` (boolean,null)
    Viewer blocked the target

  - `notes.user.relationship.blockedBy` (boolean,null)
    Target blocked the viewer

  - `notes.user.relationship.muted` (object,null)
    Viewer mutes the target

  - `notes.user.relationship.muted.state` (boolean, required)

  - `notes.user.relationship.muted.expiresAt` (string,null)
    Example: "2022-03-10T16:15:50Z"

  - `notes.user.relationship.note` (string,null)
    Viewer's private note about the target

  - `notes.user.entityType` (string)
    Entity type: USER, BOT, APPLICATION, GROUP_CHANNEL
    Enum: "USER", "BOT", "APPLICATION", "GROUP_CHANNEL"

  - `notes.user.appMeta` (object)
    Structured metadata (channel flags, channel color, etc.)

  - `notes.user.groupId` (string,null)
    Group ID if this is a group channel or group user.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `notes.user.groupPrivacy` (string,null)
    Privacy of this channel in a group.
    Enum: "PUBLIC", "PRIVATE"

  - `notes.user.groupUserName` (string,null)
    Name of the channel inside a group

  - `notes.user.actorType` (string,null)
    Whether this user is a person, application or a service
    Enum: "Application", "Group", "Organization", "Person", "Service"

  - `notes.user.deleted` (boolean,null)

  - `notes.user.groupAvatar` (object,null)
    Group avatar (only present for group channels)

  - `notes.user.groupAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `notes.user.groupAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `notes.user.groupAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `notes.user.groupAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `notes.user.groupAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `notes.user.groupAvatar.meta` (object)
    Meta data

  - `notes.user.groupAvatar.meta.blurhash` (string,null)

  - `notes.user.groupAvatar.meta.name` (string,null)

  - `notes.user.groupAvatar.meta.altText` (string,null)

  - `notes.user.groupAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `notes.user.groupAvatar.files` (array, required)
    List of all the files this upload has

  - `notes.user.groupAvatar.files.uri` (string,null, required)
    Full url of the file

  - `notes.user.groupAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `notes.user.groupAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `notes.user.groupAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `notes.user.groupAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `notes.user.groupAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `notes.user.groupAvatar.files.meta.width` (integer,null)
    Media width

  - `notes.user.groupAvatar.files.meta.height` (integer,null)
    Media height

  - `notes.user.groupAvatar.files.meta.codec` (string,null)
    Video codec

  - `notes.user.groupAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `notes.user.groupAvatar.files.size` (integer, required)
    File size in bytes

  - `notes.user.groupAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `notes.user.groupAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `notes.user.groupAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `notes.user.groupAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `notes.user.groupAvatar.error` (string,null)
    Upload processing error

  - `notes.user.groupAvatar.cached` (boolean)
    true if cached

  - `notes.user.groupAvatar.logs` (string,null)
    Logs

  - `notes.user.groupAvatar.remote` (boolean)
    true if this upload is remote

  - `notes.user.groupAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `notes.user.groupAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `notes.user.groupName` (string,null)
    Group name (only present for group channels)

  - `notes.user.groupDisplayName` (string,null)
    Group display name (only present for group channels)

  - `notes.user.followApproval` (string, required)
    Follow approval mode: AUTO_APPROVE, MANUALLY_APPROVES, or UNKNOWN
    Enum: "AUTO_APPROVE", "MANUALLY_APPROVES", "UNKNOWN"

  - `notes.user.groupPrimary` (boolean,null)
    true if this is primary group channel.

  - `notes.user.groupAutoSubscribe` (boolean,null)
    true if this is auto-subscribe group channel.

  - `notes.user.channel` (boolean, required)
    Whether this is a channel or a user. Deprecated: use 'entityType' instead.

  - `createdAt` (string, required)
    When the report was created
    Example: "2022-03-10T16:15:50Z"

  - `updatedAt` (string, required)
    When the report was last updated
    Example: "2022-03-10T16:15:50Z"

  - `post` (object,null)
    Target post (if targetId is a post)

  - `post.id` (string, required)
    internal post id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.uri` (string, required)
    unique post uri

  - `post.text` (string, required)
    post text, raw or html depending on how it was requested

  - `post.path` (array, required)
    replies path
    Example: ["us_01hxcvk1hjexere4pvtrj0ymqq"]

  - `post.privacy` (string, required)
    post privacy level
    Enum: "PUBLIC", "UNLISTED", "PRIVATE", "DIRECT", "FOLLOW_POST", "HIDDEN"

  - `post.effectivePrivacy` (string, required)
    Resolved privacy that never contains FOLLOW_POST. For FOLLOW_POST posts, this is the root post's privacy. For all other posts, this equals privacy.
    Enum: "PUBLIC", "UNLISTED", "PRIVATE", "DIRECT", "FOLLOW_POST", "HIDDEN"

  - `post.kind` (string, required)
    Article or Note
    Enum: "Note", "Article"

  - `post.software` (string, required)
    post software
    Example: "wellesley"

  - `post.repostOf` (string,null)
    id of a post this one was reposted from
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.ownerId` (string, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.ownerType` (string, required)
    Owner types for posts and drafts:
      * USER - user's channel (personal or group channel)
      * EVENT - event (personal or group)

       POST OWNER: 
      - Personal channel
          - userId = author
          - ownerId = userId (Type.USER)
          - ownerType = USER
          - groupId = null
      - Personal event
          - userId = author
          - ownerId = eventId (Type.EVENT)
          - ownerType = EVENT
          - groupId = null
      - Group channel
          - userId = author
          - ownerId = channel userId (Type.GROUP_CHANNEL, gc_ prefix)
          - ownerType = USER
          - groupId = groupId
      - Group event
          - userId = author
          - ownerId = eventId (Type.EVENT)
          - ownerType = EVENT
          - groupId = groupId
    Enum: "USER", "EVENT"

  - `post.groupId` (string,null, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.title` (string,null, required)

  - `post.summary` (string,null)
    Subject or summary line, below which post content is collapsed until expanded.

  - `post.tags` (array, required)
    List of tags

  - `post.mentions` (array, required)
    List of mentions

  - `post.stats` (object, required)
    Stats

  - `post.stats.likes` (integer)

  - `post.stats.reposts` (integer)

  - `post.stats.quotes` (integer)

  - `post.stats.comments` (integer)

  - `post.stats.views` (integer)

  - `post.stats.bookmarks` (integer)

  - `post.stats.reactions` (object)

  - `post.stats.watchTime` (integer,null)

  - `post.stats.secondsToFirstAnswer` (integer,null)

  - `post.stats.secondsToAccepted` (integer,null)

  - `post.stats.lastActivity` (string)
    Example: "2022-03-10T16:15:50Z"

  - `post.stats.lastViewTimestamp` (string)
    Example: "2022-03-10T16:15:50Z"

  - `post.settings` (object, required)
    Settings

  - `post.settings.commentsEnabled` (boolean)

  - `post.settings.sensitive` (boolean)

  - `post.settings.hiddenFrom` (string,null)
    Privacy levels for posts:
      * PUBLIC - post is visible to anyone, including people who are not logged in and those who do not follow the user.
                 It appears in the public timelines (home, local, and federated).
      * UNLISTED - post is visible to anyone who visits the user's profile, but it does not appear in public timelines.
                 Only followers and those who visit the user's profile directly can see it.
      * PRIVATE - post is only visible to the user's followers. It does not appear in public timelines or on the user's profile for non-followers.
      * DIRECT - post is visible only to the mentioned users. It functions like a direct message and is not visible on public timelines, the user's profile, or to followers.
      * FOLLOW_POST - comment only. Follow parent post visibility
      * HIDDEN - post is visible only to the author. It is never federated on create/delete. Transitioning to a visible privacy sends
      *            Create for born-hidden posts and Update for re-unhide. Visible-to-HIDDEN is allowed only for personal root posts.
    Enum: "PUBLIC", "UNLISTED", "PRIVATE", "DIRECT", "FOLLOW_POST", "HIDDEN"

  - `post.lang` (string,null, required)
    Enum: "BG", "CS", "DA", "DE", "EL", "EN", "ES", "ET", "FI", "FR", "HU", "ID", "IT", "JA", "KO", "LT", "LV", "NB", "NL", "PL", "PT", "RO", "RU", "SK", "SL", "SV", "TR", "UK", "ZH"

  - `post.poll` (object,null, required)

  - `post.poll.id` (string, required)
    Internal poll id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.poll.startedAt` (string, required)
    Time when poll starts. Poll is valid from startedAt until expiresAt.
    Example: "2022-03-10T16:15:50Z"

  - `post.poll.expiresAt` (string,null, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.poll.multiple` (boolean, required)

  - `post.poll.votersCount` (integer, required)

  - `post.poll.options` (array, required)

  - `post.poll.options.title` (string, required)

  - `post.poll.options.votesCount` (integer, required)

  - `post.poll.hideTotals` (boolean, required)

  - `post.poll.ownVotes` (array,null)

  - `post.poll.emojis` (array,null)

  - `post.poll.emojis.shortcode` (string, required)

  - `post.poll.emojis.category` (string,null, required)

  - `post.poll.emojis.url` (string, required)

  - `post.poll.emojis.staticUrl` (string, required)

  - `post.poll.emojis.visibleInPicker` (boolean, required)

  - `post.card` (object,null, required)
    Preview card for any links in the post

  - `post.card.url` (string,null, required)
    URL being referenced

  - `post.card.title` (string,null, required)
    Title of the linked resource

  - `post.card.description` (string,null, required)
    Description of the linked resource

  - `post.card.icon` (string,null, required)
    Favicon URL

  - `post.card.image` (string,null, required)
    Preview image URL

  - `post.card.imageAlt` (string,null, required)
    Alt text for the preview image

  - `post.card.publisher` (object,null, required)
    Information about the website/provider

  - `post.card.publisher.name` (string,null, required)

  - `post.card.publisher.url` (string,null, required)

  - `post.card.publisher.logo` (string,null)

  - `post.card.publisher.type` (string,null)

  - `post.card.oembedHtml` (string,null)
    HTML snippet to embed the link (from oEmbed), e.g., an iframe

  - `post.card.createdAt` (string, required)
    When the card data was fetched/created
    Example: "2022-03-10T16:15:50Z"

  - `post.card.expiresAt` (string,null, required)
    When the card data should be considered stale
    Example: "2022-03-10T16:15:50Z"

  - `post.mediaType` (string, required)
    Post media type. Default for Note is text/plain, for Article text/markdown
    Enum: "TEXT_PLAIN", "MARKDOWN"

  - `post.translations` (object,null, required)

  - `post.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author` (object, required)
    One of account's users.
       Can be multiple per account

  - `post.author.id` (string, required)
    internal id of this user
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.username` (string, required)
    unique user name
    Example: "john_smith"

  - `post.author.domain` (string, required)
    User's domain
    Example: "wlsly1.net"

  - `post.author.local` (boolean, required)
    Whether this user is local to this server

  - `post.author.displayName` (string, required)
    full name of the user
    Example: "John Smith"

  - `post.author.uri` (string, required)
    URI of this user
    Example: "https://wlsly1.net/users/john_smith"

  - `post.author.avatar` (object,null)
    User's avatar

  - `post.author.avatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.avatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.avatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.avatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.avatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.author.avatar.meta` (object)
    Meta data

  - `post.author.avatar.meta.blurhash` (string,null)

  - `post.author.avatar.meta.name` (string,null)

  - `post.author.avatar.meta.altText` (string,null)

  - `post.author.avatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `post.author.avatar.files` (array, required)
    List of all the files this upload has

  - `post.author.avatar.files.uri` (string,null, required)
    Full url of the file

  - `post.author.avatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.avatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `post.author.avatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `post.author.avatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `post.author.avatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `post.author.avatar.files.meta.width` (integer,null)
    Media width

  - `post.author.avatar.files.meta.height` (integer,null)
    Media height

  - `post.author.avatar.files.meta.codec` (string,null)
    Video codec

  - `post.author.avatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `post.author.avatar.files.size` (integer, required)
    File size in bytes

  - `post.author.avatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.avatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.avatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.author.avatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `post.author.avatar.error` (string,null)
    Upload processing error

  - `post.author.avatar.cached` (boolean)
    true if cached

  - `post.author.avatar.logs` (string,null)
    Logs

  - `post.author.avatar.remote` (boolean)
    true if this upload is remote

  - `post.author.avatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.avatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.createdAt` (string, required)
    User's creation time
    Example: "2022-03-10T16:15:50Z"

  - `post.author.state` (string, required)
    User's moderation state
    Enum: "REGULAR", "SENSITIVE", "LIMITED", "SUSPENDED"

  - `post.author.relationship` (object,null)
    Relationship with this user

  - `post.author.relationship.following` (string,null)
    Does the viewer follow the target?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `post.author.relationship.followed` (string,null)
    Does the target follow the viewer?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `post.author.relationship.blocked` (boolean,null)
    Viewer blocked the target

  - `post.author.relationship.blockedBy` (boolean,null)
    Target blocked the viewer

  - `post.author.relationship.muted` (object,null)
    Viewer mutes the target

  - `post.author.relationship.muted.state` (boolean, required)

  - `post.author.relationship.muted.expiresAt` (string,null)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.relationship.note` (string,null)
    Viewer's private note about the target

  - `post.author.entityType` (string)
    Entity type: USER, BOT, APPLICATION, GROUP_CHANNEL
    Enum: "USER", "BOT", "APPLICATION", "GROUP_CHANNEL"

  - `post.author.appMeta` (object)
    Structured metadata (channel flags, channel color, etc.)

  - `post.author.groupId` (string,null)
    Group ID if this is a group channel or group user.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.groupPrivacy` (string,null)
    Privacy of this channel in a group.
    Enum: "PUBLIC", "PRIVATE"

  - `post.author.groupUserName` (string,null)
    Name of the channel inside a group

  - `post.author.actorType` (string,null)
    Whether this user is a person, application or a service
    Enum: "Application", "Group", "Organization", "Person", "Service"

  - `post.author.deleted` (boolean,null)

  - `post.author.groupAvatar` (object,null)
    Group avatar (only present for group channels)

  - `post.author.groupAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.groupAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.groupAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.groupAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.groupAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.author.groupAvatar.meta` (object)
    Meta data

  - `post.author.groupAvatar.meta.blurhash` (string,null)

  - `post.author.groupAvatar.meta.name` (string,null)

  - `post.author.groupAvatar.meta.altText` (string,null)

  - `post.author.groupAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `post.author.groupAvatar.files` (array, required)
    List of all the files this upload has

  - `post.author.groupAvatar.files.uri` (string,null, required)
    Full url of the file

  - `post.author.groupAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.author.groupAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `post.author.groupAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `post.author.groupAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `post.author.groupAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `post.author.groupAvatar.files.meta.width` (integer,null)
    Media width

  - `post.author.groupAvatar.files.meta.height` (integer,null)
    Media height

  - `post.author.groupAvatar.files.meta.codec` (string,null)
    Video codec

  - `post.author.groupAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `post.author.groupAvatar.files.size` (integer, required)
    File size in bytes

  - `post.author.groupAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.groupAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.groupAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.author.groupAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `post.author.groupAvatar.error` (string,null)
    Upload processing error

  - `post.author.groupAvatar.cached` (boolean)
    true if cached

  - `post.author.groupAvatar.logs` (string,null)
    Logs

  - `post.author.groupAvatar.remote` (boolean)
    true if this upload is remote

  - `post.author.groupAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.groupAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.author.groupName` (string,null)
    Group name (only present for group channels)

  - `post.author.groupDisplayName` (string,null)
    Group display name (only present for group channels)

  - `post.author.followApproval` (string, required)
    Follow approval mode: AUTO_APPROVE, MANUALLY_APPROVES, or UNKNOWN
    Enum: "AUTO_APPROVE", "MANUALLY_APPROVES", "UNKNOWN"

  - `post.author.groupPrimary` (boolean,null)
    true if this is primary group channel.

  - `post.author.groupAutoSubscribe` (boolean,null)
    true if this is auto-subscribe group channel.

  - `post.author.channel` (boolean, required)
    Whether this is a channel or a user. Deprecated: use 'entityType' instead.

  - `post.uploads` (array, required)

  - `post.uploads.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.uploads.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.uploads.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.uploads.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.uploads.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.uploads.meta` (object)
    Meta data

  - `post.uploads.meta.blurhash` (string,null)

  - `post.uploads.meta.name` (string,null)

  - `post.uploads.meta.altText` (string,null)

  - `post.uploads.size` (integer, required)
    Size in bytes of all the files in this upload

  - `post.uploads.files` (array, required)
    List of all the files this upload has

  - `post.uploads.files.uri` (string,null, required)
    Full url of the file

  - `post.uploads.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.uploads.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `post.uploads.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `post.uploads.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `post.uploads.files.meta.duration` (number,null)
    Video duration in seconds

  - `post.uploads.files.meta.width` (integer,null)
    Media width

  - `post.uploads.files.meta.height` (integer,null)
    Media height

  - `post.uploads.files.meta.codec` (string,null)
    Video codec

  - `post.uploads.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `post.uploads.files.size` (integer, required)
    File size in bytes

  - `post.uploads.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.uploads.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.uploads.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.uploads.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `post.uploads.error` (string,null)
    Upload processing error

  - `post.uploads.cached` (boolean)
    true if cached

  - `post.uploads.logs` (string,null)
    Logs

  - `post.uploads.remote` (boolean)
    true if this upload is remote

  - `post.uploads.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.uploads.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.liked` (boolean,null)
    Whether the current user liked it or not

  - `post.reposted` (boolean,null)
    Whether the current user reposted it or not

  - `post.quoted` (boolean,null)
    Whether the current user quoted it or not

  - `post.muted` (boolean,null)
    Whether the current user muted the author of the post

  - `post.blocked` (boolean,null)
    Whether the current user blocked the author of the post

  - `post.visible` (boolean,null)
    Whether the current user can see it or not (e.g. FOLLOWERS_ONLY

  - `post.pinned` (boolean,null)
    Whether the current user pinned it or not

  - `post.pinnedAt` (string,null)
    Timestamp when the post was pinned/highlighted (from post_pins)
    Example: "2022-03-10T16:15:50Z"

  - `post.bookmarked` (boolean,null)
    Whether the current user bookmarked it or not

  - `post.subscribed` (boolean,null)
    Whether the current user is subscribed to post updates

  - `post.canManage` (boolean,null)
    Whether the current user can edit/delete this post

  - `post.edited` (boolean,null)
    Whether the post was edited

  - `post.deleted` (boolean,null, required)

  - `post.emojis` (array,null)

  - `post.emojis.shortcode` (string, required)

  - `post.emojis.category` (string,null, required)

  - `post.emojis.url` (string, required)

  - `post.emojis.staticUrl` (string, required)

  - `post.emojis.visibleInPicker` (boolean, required)

  - `post.replies` (array,null)

  - `post.repostedBy` (array,null)
    List of users who reposted this post

  - `post.repostedBy.id` (string, required)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.repostedBy.displayName` (string, required)

  - `post.repostedBy.username` (string, required)

  - `post.repostedBy.domain` (string, required)

  - `post.originalPost` (object,null)
    Original post of repost/quote (the post being reposted or quoted). Related to repostOf field.

  - `post.parent` (object,null)
    Parent post for comments/replies. Related to replyTo (last element in path).

  - `post.votes` (object,null)
    Votes summary

  - `post.votes.upvotes` (integer, required)
    upvotes count

  - `post.votes.downvotes` (integer, required)
    downvotes count

  - `post.votes.ownVote` (integer,null)
    current user's vote, if any

  - `post.publisher` (object,null)
    Publisher context for mixed-scope lists (e.g. search). Contains channel or group branding.

  - `post.publisher.id` (string, required)
    Publisher id (user id for channels, group id for groups)
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.type` (string, required)
    Publisher type (USER or GROUP)
    Enum: "USER", "ACCOUNT", "PLATFORM_APP", "APPLICATION", "BOT", "GROUP_CHANNEL", "APP_DATA", "POST", "POLL", "TAG", "TAG_REPORT", "USER_LIST", "NOTIFICATION", "REPORT", "REPORT_COMMENT", "RULE", "QUESTION", "ANSWER", "GROUP", "DRAFT", "UPLOAD", "FILE", "UPLOAD_ACTION", "UPLOAD_JOB", "EXECUTION", "EMPLOYEE_PROFILE", "EMPLOYER_PROFILE", "JOB_POSTING", "JOB_APPLICATION", "MEMBER_LIST", "RBAC_ROLE", "JOIN_REQUEST", "GROUP_INVITE", "EVENT", "AI_PROVIDER", "AI_MODEL", "AI_JOB", "AI_SIGNAL", "AI_SCOPED_PROVIDER", "AI_SCOPED_MODEL", "EMBEDDING_RECALC", "ASYNC_REFRESH", "QUOTE_AUTH", "EMPTY"

  - `post.publisher.username` (string, required)
    Publisher username (channel username or group name)

  - `post.publisher.displayName` (string, required)
    Publisher display name

  - `post.publisher.domain` (string, required)
    Publisher domain

  - `post.publisher.avatar` (object,null)
    Publisher avatar (channel avatar or group avatar)

  - `post.publisher.avatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.avatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.avatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.avatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.avatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.publisher.avatar.meta` (object)
    Meta data

  - `post.publisher.avatar.meta.blurhash` (string,null)

  - `post.publisher.avatar.meta.name` (string,null)

  - `post.publisher.avatar.meta.altText` (string,null)

  - `post.publisher.avatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `post.publisher.avatar.files` (array, required)
    List of all the files this upload has

  - `post.publisher.avatar.files.uri` (string,null, required)
    Full url of the file

  - `post.publisher.avatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.avatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `post.publisher.avatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `post.publisher.avatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `post.publisher.avatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `post.publisher.avatar.files.meta.width` (integer,null)
    Media width

  - `post.publisher.avatar.files.meta.height` (integer,null)
    Media height

  - `post.publisher.avatar.files.meta.codec` (string,null)
    Video codec

  - `post.publisher.avatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `post.publisher.avatar.files.size` (integer, required)
    File size in bytes

  - `post.publisher.avatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.avatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.avatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.publisher.avatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `post.publisher.avatar.error` (string,null)
    Upload processing error

  - `post.publisher.avatar.cached` (boolean)
    true if cached

  - `post.publisher.avatar.logs` (string,null)
    Logs

  - `post.publisher.avatar.remote` (boolean)
    true if this upload is remote

  - `post.publisher.avatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.avatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.groupAvatar` (object,null)
    Group avatar (only present for group channels)

  - `post.publisher.groupAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.groupAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.groupAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.groupAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.groupAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.publisher.groupAvatar.meta` (object)
    Meta data

  - `post.publisher.groupAvatar.meta.blurhash` (string,null)

  - `post.publisher.groupAvatar.meta.name` (string,null)

  - `post.publisher.groupAvatar.meta.altText` (string,null)

  - `post.publisher.groupAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `post.publisher.groupAvatar.files` (array, required)
    List of all the files this upload has

  - `post.publisher.groupAvatar.files.uri` (string,null, required)
    Full url of the file

  - `post.publisher.groupAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.groupAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `post.publisher.groupAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `post.publisher.groupAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `post.publisher.groupAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `post.publisher.groupAvatar.files.meta.width` (integer,null)
    Media width

  - `post.publisher.groupAvatar.files.meta.height` (integer,null)
    Media height

  - `post.publisher.groupAvatar.files.meta.codec` (string,null)
    Video codec

  - `post.publisher.groupAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `post.publisher.groupAvatar.files.size` (integer, required)
    File size in bytes

  - `post.publisher.groupAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.groupAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.groupAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `post.publisher.groupAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `post.publisher.groupAvatar.error` (string,null)
    Upload processing error

  - `post.publisher.groupAvatar.cached` (boolean)
    true if cached

  - `post.publisher.groupAvatar.logs` (string,null)
    Logs

  - `post.publisher.groupAvatar.remote` (boolean)
    true if this upload is remote

  - `post.publisher.groupAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.groupAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `post.publisher.groupId` (string,null)
    Group id (only present for group channels)
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.publisher.groupName` (string,null)
    Group name (only present for group channels)

  - `post.publisher.groupDisplayName` (string,null)
    Group display name (only present for group channels)

  - `post.publisher.groupPrivacy` (string,null)
    Channel privacy within a group (PUBLIC or PRIVATE)
    Enum: "PUBLIC", "PRIVATE"

  - `post.publisher.groupUserName` (string,null)
    Channel username within a group (only present for group channels)

  - `post.isHighlightCopy` (boolean,null)
    Whether this is a copy of a highlighted (pinned) reply
                (used to surface deep (2nd+ lvl) highlights under the root post).

  - `post.quoteApproval` (object,null)
    Quote approval policy info, including viewer's approval status

  - `post.quoteApproval.policy` (string, required)
    Effective quote policy for this post
    Enum: "PUBLIC", "FOLLOWERS", "NOBODY"

  - `post.quoteApproval.automatic` (array, required)
    Categories that get automatic approval (e.g. 'public', 'followers')

  - `post.quoteApproval.manual` (array, required)
    Categories that require manual approval

  - `post.quoteApproval.currentUser` (string,null)
    Current user's approval status: 'automatic', 'manual', or null

  - `post.address` (object,null)
    Post location

  - `post.address.formatted` (string, required)
    Formatted address
    Example: "Adriaen Van Ostadestraat 53, 4703 NT Roosendaal, Netherlands"

  - `post.address.name` (string,null)
    Name
    Example: "Casa Vacanze"

  - `post.address.country` (string,null)
    Country
    Example: "USA"

  - `post.address.countryCode` (string,null)
    Country two letter name
    Example: "us"

  - `post.address.region` (string,null)
    Region
    Example: "Massachusetts"

  - `post.address.regionCode` (string,null)
    Region Code
    Example: "MA"

  - `post.address.subRegion` (string,null)
    Sub-region
    Example: "Newton Heights"

  - `post.address.locality` (string,null)
    Locality
    Example: "Madrid"

  - `post.address.street` (string,null)
    Street
    Example: "Adriaen Van Ostadestraat"

  - `post.address.postalCode` (string,null)
    Address postal code
    Example: "4703 NT"

  - `post.address.houseNumber` (string,null)
    House number
    Example: "23"

  - `post.address.longitude` (number,null)
    Longitude
    Example: 4.437564

  - `post.address.latitude` (number,null)
    Latitude
    Example: 51.534581

  - `post.address.timeZone` (string,null)
    Time zone name
    Example: "Europe/Amsterdam"

  - `post.address.plusCode` (string,null)
    Short code
    Example: "9F36GCMQ+R2"

  - `post.address.serviceId` (string,null)
    Service ID
    Example: "geoapify"

  - `post.address.placeId` (string,null)
    Service place id

  - `post.replyTo` (string,null)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `post.conversationId` (string)
    UUID with type prefix
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetUser` (object,null)
    Target user (if targetId is a user)

  - `targetUser.id` (string, required)
    internal id of this user
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetUser.username` (string, required)
    unique user name
    Example: "john_smith"

  - `targetUser.domain` (string, required)
    User's domain
    Example: "wlsly1.net"

  - `targetUser.local` (boolean, required)
    Whether this user is local to this server

  - `targetUser.displayName` (string, required)
    full name of the user
    Example: "John Smith"

  - `targetUser.uri` (string, required)
    URI of this user
    Example: "https://wlsly1.net/users/john_smith"

  - `targetUser.avatar` (object,null)
    User's avatar

  - `targetUser.avatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetUser.avatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetUser.avatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetUser.avatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetUser.avatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `targetUser.avatar.meta` (object)
    Meta data

  - `targetUser.avatar.meta.blurhash` (string,null)

  - `targetUser.avatar.meta.name` (string,null)

  - `targetUser.avatar.meta.altText` (string,null)

  - `targetUser.avatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `targetUser.avatar.files` (array, required)
    List of all the files this upload has

  - `targetUser.avatar.files.uri` (string,null, required)
    Full url of the file

  - `targetUser.avatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetUser.avatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `targetUser.avatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `targetUser.avatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `targetUser.avatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `targetUser.avatar.files.meta.width` (integer,null)
    Media width

  - `targetUser.avatar.files.meta.height` (integer,null)
    Media height

  - `targetUser.avatar.files.meta.codec` (string,null)
    Video codec

  - `targetUser.avatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `targetUser.avatar.files.size` (integer, required)
    File size in bytes

  - `targetUser.avatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetUser.avatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetUser.avatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `targetUser.avatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `targetUser.avatar.error` (string,null)
    Upload processing error

  - `targetUser.avatar.cached` (boolean)
    true if cached

  - `targetUser.avatar.logs` (string,null)
    Logs

  - `targetUser.avatar.remote` (boolean)
    true if this upload is remote

  - `targetUser.avatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetUser.avatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetUser.createdAt` (string, required)
    User's creation time
    Example: "2022-03-10T16:15:50Z"

  - `targetUser.state` (string, required)
    User's moderation state
    Enum: "REGULAR", "SENSITIVE", "LIMITED", "SUSPENDED"

  - `targetUser.relationship` (object,null)
    Relationship with this user

  - `targetUser.relationship.following` (string,null)
    Does the viewer follow the target?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `targetUser.relationship.followed` (string,null)
    Does the target follow the viewer?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `targetUser.relationship.blocked` (boolean,null)
    Viewer blocked the target

  - `targetUser.relationship.blockedBy` (boolean,null)
    Target blocked the viewer

  - `targetUser.relationship.muted` (object,null)
    Viewer mutes the target

  - `targetUser.relationship.muted.state` (boolean, required)

  - `targetUser.relationship.muted.expiresAt` (string,null)
    Example: "2022-03-10T16:15:50Z"

  - `targetUser.relationship.note` (string,null)
    Viewer's private note about the target

  - `targetUser.entityType` (string)
    Entity type: USER, BOT, APPLICATION, GROUP_CHANNEL
    Enum: "USER", "BOT", "APPLICATION", "GROUP_CHANNEL"

  - `targetUser.appMeta` (object)
    Structured metadata (channel flags, channel color, etc.)

  - `targetUser.groupId` (string,null)
    Group ID if this is a group channel or group user.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetUser.groupPrivacy` (string,null)
    Privacy of this channel in a group.
    Enum: "PUBLIC", "PRIVATE"

  - `targetUser.groupUserName` (string,null)
    Name of the channel inside a group

  - `targetUser.actorType` (string,null)
    Whether this user is a person, application or a service
    Enum: "Application", "Group", "Organization", "Person", "Service"

  - `targetUser.deleted` (boolean,null)

  - `targetUser.groupAvatar` (object,null)
    Group avatar (only present for group channels)

  - `targetUser.groupAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetUser.groupAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetUser.groupAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetUser.groupAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetUser.groupAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `targetUser.groupAvatar.meta` (object)
    Meta data

  - `targetUser.groupAvatar.meta.blurhash` (string,null)

  - `targetUser.groupAvatar.meta.name` (string,null)

  - `targetUser.groupAvatar.meta.altText` (string,null)

  - `targetUser.groupAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `targetUser.groupAvatar.files` (array, required)
    List of all the files this upload has

  - `targetUser.groupAvatar.files.uri` (string,null, required)
    Full url of the file

  - `targetUser.groupAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetUser.groupAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `targetUser.groupAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `targetUser.groupAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `targetUser.groupAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `targetUser.groupAvatar.files.meta.width` (integer,null)
    Media width

  - `targetUser.groupAvatar.files.meta.height` (integer,null)
    Media height

  - `targetUser.groupAvatar.files.meta.codec` (string,null)
    Video codec

  - `targetUser.groupAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `targetUser.groupAvatar.files.size` (integer, required)
    File size in bytes

  - `targetUser.groupAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetUser.groupAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetUser.groupAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `targetUser.groupAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `targetUser.groupAvatar.error` (string,null)
    Upload processing error

  - `targetUser.groupAvatar.cached` (boolean)
    true if cached

  - `targetUser.groupAvatar.logs` (string,null)
    Logs

  - `targetUser.groupAvatar.remote` (boolean)
    true if this upload is remote

  - `targetUser.groupAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetUser.groupAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetUser.groupName` (string,null)
    Group name (only present for group channels)

  - `targetUser.groupDisplayName` (string,null)
    Group display name (only present for group channels)

  - `targetUser.followApproval` (string, required)
    Follow approval mode: AUTO_APPROVE, MANUALLY_APPROVES, or UNKNOWN
    Enum: "AUTO_APPROVE", "MANUALLY_APPROVES", "UNKNOWN"

  - `targetUser.groupPrimary` (boolean,null)
    true if this is primary group channel.

  - `targetUser.groupAutoSubscribe` (boolean,null)
    true if this is auto-subscribe group channel.

  - `targetUser.channel` (boolean, required)
    Whether this is a channel or a user. Deprecated: use 'entityType' instead.

  - `targetGroup` (object,null)
    Target group (if targetId is a group)

  - `targetGroup.stats` (object)
    Group statistics

  - `targetGroup.stats.posts` (integer, required)
    Total number of posts

  - `targetGroup.stats.postsLast24h` (integer, required)
    Posts created in the last 24 hours

  - `targetGroup.stats.comments` (integer, required)
    Total number of comments

  - `targetGroup.stats.totalStorageBytes` (integer, required)
    Total uploaded bytes

  - `targetGroup.stats.avgPostsPerDay` (number, required)
    Average posts per day over the last 30 days

  - `targetGroup.stats.avgBytesPerDay` (number, required)
    Average uploaded bytes per day over the last 30 days

  - `targetGroup.stats.members` (integer, required)
    Count of active members in the group

  - `targetGroup.stats.totalEvents` (integer, required)
    Total group events recorded

  - `targetGroup.meta` (object, required)
    group metadata including color

  - `targetGroup.meta.color` (string, required)
    Group color in HEX format

  - `targetGroup.privacy` (string, required)
    who can access the group's content
    Enum: "PUBLIC", "PRIVATE"

  - `targetGroup.visibility` (string, required)
    how discoverable the group is
    Enum: "VISIBLE", "UNLISTED", "HIDDEN"

  - `targetGroup.joinMode` (string, required)
    how users can join the group
    Enum: "OPEN", "APPROVAL", "INVITE_ONLY"

  - `targetGroup.location` (object,null)
    group's location

  - `targetGroup.location.geo` (object,null, required)
    Coordinates and other geo data

  - `targetGroup.location.geo.latitude` (number, required)

  - `targetGroup.location.geo.longitude` (number, required)

  - `targetGroup.location.geo.altitude` (number,null)

  - `targetGroup.location.geo.accuracy` (number,null)

  - `targetGroup.location.geo.verticalAccuracy` (number,null)

  - `targetGroup.location.geo.speed` (number,null)

  - `targetGroup.location.geo.bearing` (number,null)

  - `targetGroup.location.geo.timestamp` (integer,null)

  - `targetGroup.location.name` (string,null, required)

  - `targetGroup.location.autoUpdate` (boolean, required)

  - `targetGroup.location.show` (boolean, required)

  - `targetGroup.timezone` (object,null)
    group's timezone

  - `targetGroup.timezone.ianaTimezone` (string,null, required)

  - `targetGroup.timezone.autoUpdate` (boolean, required)

  - `targetGroup.timezone.show` (boolean, required)

  - `targetGroup.isMember` (boolean,null)
    Whether the current viewer is a member of the group

  - `targetGroup.pin` (integer,null)
    Pin order number if group is pinned by viewer (null if not pinned)

  - `targetGroup.canManage` (boolean,null)
    Whether the current viewer can manage this group (owner, admin, or moderator)

  - `targetGroup.isOwner` (boolean,null)
    Whether the current viewer is an owner or admin of this group

  - `targetGroup.roles` (array,null)
    Viewer's roles in this group. Only populated in admin endpoints.

  - `targetGroup.groupId` (string, required)
    internal id of this group
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetGroup.groupName` (string, required)
    unique group name

  - `targetGroup.domain` (string, required)
    Group's domain

  - `targetGroup.local` (boolean, required)
    Whether this group is local to this server

  - `targetGroup.displayName` (string, required)
    full name of the group

  - `targetGroup.summary` (string, required)
    Group description

  - `targetGroup.uri` (string, required)
    URI of this group

  - `targetGroup.publicKey` (string, required)
    Group's public key for ActivityPub

  - `targetGroup.fields` (object)
    Custom fields for the group

  - `targetGroup.type` (string, required)
    the type of this group
    Enum: "CHANNEL", "INTEREST_GROUP", "ORGANIZATION"

  - `targetGroup.membersUrl` (string, required)
    URL to group members

  - `targetGroup.banner` (object,null)
    Group's header/banner upload

  - `targetGroup.banner.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetGroup.banner.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetGroup.banner.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetGroup.banner.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetGroup.banner.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `targetGroup.banner.meta` (object)
    Meta data

  - `targetGroup.banner.meta.blurhash` (string,null)

  - `targetGroup.banner.meta.name` (string,null)

  - `targetGroup.banner.meta.altText` (string,null)

  - `targetGroup.banner.size` (integer, required)
    Size in bytes of all the files in this upload

  - `targetGroup.banner.files` (array, required)
    List of all the files this upload has

  - `targetGroup.banner.files.uri` (string,null, required)
    Full url of the file

  - `targetGroup.banner.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetGroup.banner.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `targetGroup.banner.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `targetGroup.banner.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `targetGroup.banner.files.meta.duration` (number,null)
    Video duration in seconds

  - `targetGroup.banner.files.meta.width` (integer,null)
    Media width

  - `targetGroup.banner.files.meta.height` (integer,null)
    Media height

  - `targetGroup.banner.files.meta.codec` (string,null)
    Video codec

  - `targetGroup.banner.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `targetGroup.banner.files.size` (integer, required)
    File size in bytes

  - `targetGroup.banner.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetGroup.banner.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetGroup.banner.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `targetGroup.banner.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `targetGroup.banner.error` (string,null)
    Upload processing error

  - `targetGroup.banner.cached` (boolean)
    true if cached

  - `targetGroup.banner.logs` (string,null)
    Logs

  - `targetGroup.banner.remote` (boolean)
    true if this upload is remote

  - `targetGroup.banner.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetGroup.banner.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetGroup.avatar` (object,null)
    Group's avatar

  - `targetGroup.avatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetGroup.avatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetGroup.avatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetGroup.avatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetGroup.avatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `targetGroup.avatar.meta` (object)
    Meta data

  - `targetGroup.avatar.meta.blurhash` (string,null)

  - `targetGroup.avatar.meta.name` (string,null)

  - `targetGroup.avatar.meta.altText` (string,null)

  - `targetGroup.avatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `targetGroup.avatar.files` (array, required)
    List of all the files this upload has

  - `targetGroup.avatar.files.uri` (string,null, required)
    Full url of the file

  - `targetGroup.avatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `targetGroup.avatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `targetGroup.avatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `targetGroup.avatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `targetGroup.avatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `targetGroup.avatar.files.meta.width` (integer,null)
    Media width

  - `targetGroup.avatar.files.meta.height` (integer,null)
    Media height

  - `targetGroup.avatar.files.meta.codec` (string,null)
    Video codec

  - `targetGroup.avatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `targetGroup.avatar.files.size` (integer, required)
    File size in bytes

  - `targetGroup.avatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetGroup.avatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetGroup.avatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `targetGroup.avatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `targetGroup.avatar.error` (string,null)
    Upload processing error

  - `targetGroup.avatar.cached` (boolean)
    true if cached

  - `targetGroup.avatar.logs` (string,null)
    Logs

  - `targetGroup.avatar.remote` (boolean)
    true if this upload is remote

  - `targetGroup.avatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetGroup.avatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `targetGroup.deletedAt` (string,null)
    Group deletion timestamp
    Example: "2022-03-10T16:15:50Z"

  - `targetGroup.createdAt` (string)
    Group's creation timestamp
    Example: "2022-03-10T16:15:50Z"

  - `targetGroup.updatedAt` (string)
    Group's last update timestamp
    Example: "2022-03-10T16:15:50Z"

  - `targetGroup.refreshedAt` (string)
    Group's last refresh timestamp
    Example: "2022-03-10T16:15:50Z"

  - `targetGroup.secret` (boolean)

  - `assignedUser` (object,null)
    Assigned admin (populated)

  - `assignedUser.id` (string, required)
    internal id of this user
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `assignedUser.username` (string, required)
    unique user name
    Example: "john_smith"

  - `assignedUser.domain` (string, required)
    User's domain
    Example: "wlsly1.net"

  - `assignedUser.local` (boolean, required)
    Whether this user is local to this server

  - `assignedUser.displayName` (string, required)
    full name of the user
    Example: "John Smith"

  - `assignedUser.uri` (string, required)
    URI of this user
    Example: "https://wlsly1.net/users/john_smith"

  - `assignedUser.avatar` (object,null)
    User's avatar

  - `assignedUser.avatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `assignedUser.avatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `assignedUser.avatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `assignedUser.avatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `assignedUser.avatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `assignedUser.avatar.meta` (object)
    Meta data

  - `assignedUser.avatar.meta.blurhash` (string,null)

  - `assignedUser.avatar.meta.name` (string,null)

  - `assignedUser.avatar.meta.altText` (string,null)

  - `assignedUser.avatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `assignedUser.avatar.files` (array, required)
    List of all the files this upload has

  - `assignedUser.avatar.files.uri` (string,null, required)
    Full url of the file

  - `assignedUser.avatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `assignedUser.avatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `assignedUser.avatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `assignedUser.avatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `assignedUser.avatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `assignedUser.avatar.files.meta.width` (integer,null)
    Media width

  - `assignedUser.avatar.files.meta.height` (integer,null)
    Media height

  - `assignedUser.avatar.files.meta.codec` (string,null)
    Video codec

  - `assignedUser.avatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `assignedUser.avatar.files.size` (integer, required)
    File size in bytes

  - `assignedUser.avatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `assignedUser.avatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `assignedUser.avatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `assignedUser.avatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `assignedUser.avatar.error` (string,null)
    Upload processing error

  - `assignedUser.avatar.cached` (boolean)
    true if cached

  - `assignedUser.avatar.logs` (string,null)
    Logs

  - `assignedUser.avatar.remote` (boolean)
    true if this upload is remote

  - `assignedUser.avatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `assignedUser.avatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `assignedUser.createdAt` (string, required)
    User's creation time
    Example: "2022-03-10T16:15:50Z"

  - `assignedUser.state` (string, required)
    User's moderation state
    Enum: "REGULAR", "SENSITIVE", "LIMITED", "SUSPENDED"

  - `assignedUser.relationship` (object,null)
    Relationship with this user

  - `assignedUser.relationship.following` (string,null)
    Does the viewer follow the target?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `assignedUser.relationship.followed` (string,null)
    Does the target follow the viewer?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `assignedUser.relationship.blocked` (boolean,null)
    Viewer blocked the target

  - `assignedUser.relationship.blockedBy` (boolean,null)
    Target blocked the viewer

  - `assignedUser.relationship.muted` (object,null)
    Viewer mutes the target

  - `assignedUser.relationship.muted.state` (boolean, required)

  - `assignedUser.relationship.muted.expiresAt` (string,null)
    Example: "2022-03-10T16:15:50Z"

  - `assignedUser.relationship.note` (string,null)
    Viewer's private note about the target

  - `assignedUser.entityType` (string)
    Entity type: USER, BOT, APPLICATION, GROUP_CHANNEL
    Enum: "USER", "BOT", "APPLICATION", "GROUP_CHANNEL"

  - `assignedUser.appMeta` (object)
    Structured metadata (channel flags, channel color, etc.)

  - `assignedUser.groupId` (string,null)
    Group ID if this is a group channel or group user.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `assignedUser.groupPrivacy` (string,null)
    Privacy of this channel in a group.
    Enum: "PUBLIC", "PRIVATE"

  - `assignedUser.groupUserName` (string,null)
    Name of the channel inside a group

  - `assignedUser.actorType` (string,null)
    Whether this user is a person, application or a service
    Enum: "Application", "Group", "Organization", "Person", "Service"

  - `assignedUser.deleted` (boolean,null)

  - `assignedUser.groupAvatar` (object,null)
    Group avatar (only present for group channels)

  - `assignedUser.groupAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `assignedUser.groupAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `assignedUser.groupAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `assignedUser.groupAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `assignedUser.groupAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `assignedUser.groupAvatar.meta` (object)
    Meta data

  - `assignedUser.groupAvatar.meta.blurhash` (string,null)

  - `assignedUser.groupAvatar.meta.name` (string,null)

  - `assignedUser.groupAvatar.meta.altText` (string,null)

  - `assignedUser.groupAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `assignedUser.groupAvatar.files` (array, required)
    List of all the files this upload has

  - `assignedUser.groupAvatar.files.uri` (string,null, required)
    Full url of the file

  - `assignedUser.groupAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `assignedUser.groupAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `assignedUser.groupAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `assignedUser.groupAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `assignedUser.groupAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `assignedUser.groupAvatar.files.meta.width` (integer,null)
    Media width

  - `assignedUser.groupAvatar.files.meta.height` (integer,null)
    Media height

  - `assignedUser.groupAvatar.files.meta.codec` (string,null)
    Video codec

  - `assignedUser.groupAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `assignedUser.groupAvatar.files.size` (integer, required)
    File size in bytes

  - `assignedUser.groupAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `assignedUser.groupAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `assignedUser.groupAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `assignedUser.groupAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `assignedUser.groupAvatar.error` (string,null)
    Upload processing error

  - `assignedUser.groupAvatar.cached` (boolean)
    true if cached

  - `assignedUser.groupAvatar.logs` (string,null)
    Logs

  - `assignedUser.groupAvatar.remote` (boolean)
    true if this upload is remote

  - `assignedUser.groupAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `assignedUser.groupAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `assignedUser.groupName` (string,null)
    Group name (only present for group channels)

  - `assignedUser.groupDisplayName` (string,null)
    Group display name (only present for group channels)

  - `assignedUser.followApproval` (string, required)
    Follow approval mode: AUTO_APPROVE, MANUALLY_APPROVES, or UNKNOWN
    Enum: "AUTO_APPROVE", "MANUALLY_APPROVES", "UNKNOWN"

  - `assignedUser.groupPrimary` (boolean,null)
    true if this is primary group channel.

  - `assignedUser.groupAutoSubscribe` (boolean,null)
    true if this is auto-subscribe group channel.

  - `assignedUser.channel` (boolean, required)
    Whether this is a channel or a user. Deprecated: use 'entityType' instead.

  - `comments` (array,null)
    Report comments/submissions from users

  - `comments.id` (string, required)
    Comment ID
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.reportId` (string, required)
    Report this comment belongs to
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.userId` (string, required)
    User who submitted this report (local or remote)
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.comment` (string, required)
    The report comment/reason text

  - `comments.type` (string, required)
    Type/reason for the report
    Enum: "SPAM", "SERVER_RULES", "GROUP_RULES", "ILLEGAL", "OTHER"

  - `comments.uploadIds` (array)
    Attachment upload IDs
    Example: ["us_01hxcvk1hjexere4pvtrj0ymqq"]

  - `comments.createdAt` (string, required)
    When this comment was created
    Example: "2022-03-10T16:15:50Z"

  - `comments.user` (object,null)
    User who submitted this report (populated)

  - `comments.user.id` (string, required)
    internal id of this user
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.user.username` (string, required)
    unique user name
    Example: "john_smith"

  - `comments.user.domain` (string, required)
    User's domain
    Example: "wlsly1.net"

  - `comments.user.local` (boolean, required)
    Whether this user is local to this server

  - `comments.user.displayName` (string, required)
    full name of the user
    Example: "John Smith"

  - `comments.user.uri` (string, required)
    URI of this user
    Example: "https://wlsly1.net/users/john_smith"

  - `comments.user.avatar` (object,null)
    User's avatar

  - `comments.user.avatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.user.avatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.user.avatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.user.avatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.user.avatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `comments.user.avatar.meta` (object)
    Meta data

  - `comments.user.avatar.meta.blurhash` (string,null)

  - `comments.user.avatar.meta.name` (string,null)

  - `comments.user.avatar.meta.altText` (string,null)

  - `comments.user.avatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `comments.user.avatar.files` (array, required)
    List of all the files this upload has

  - `comments.user.avatar.files.uri` (string,null, required)
    Full url of the file

  - `comments.user.avatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.user.avatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `comments.user.avatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `comments.user.avatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `comments.user.avatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `comments.user.avatar.files.meta.width` (integer,null)
    Media width

  - `comments.user.avatar.files.meta.height` (integer,null)
    Media height

  - `comments.user.avatar.files.meta.codec` (string,null)
    Video codec

  - `comments.user.avatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `comments.user.avatar.files.size` (integer, required)
    File size in bytes

  - `comments.user.avatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `comments.user.avatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `comments.user.avatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `comments.user.avatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `comments.user.avatar.error` (string,null)
    Upload processing error

  - `comments.user.avatar.cached` (boolean)
    true if cached

  - `comments.user.avatar.logs` (string,null)
    Logs

  - `comments.user.avatar.remote` (boolean)
    true if this upload is remote

  - `comments.user.avatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `comments.user.avatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `comments.user.createdAt` (string, required)
    User's creation time
    Example: "2022-03-10T16:15:50Z"

  - `comments.user.state` (string, required)
    User's moderation state
    Enum: "REGULAR", "SENSITIVE", "LIMITED", "SUSPENDED"

  - `comments.user.relationship` (object,null)
    Relationship with this user

  - `comments.user.relationship.following` (string,null)
    Does the viewer follow the target?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `comments.user.relationship.followed` (string,null)
    Does the target follow the viewer?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `comments.user.relationship.blocked` (boolean,null)
    Viewer blocked the target

  - `comments.user.relationship.blockedBy` (boolean,null)
    Target blocked the viewer

  - `comments.user.relationship.muted` (object,null)
    Viewer mutes the target

  - `comments.user.relationship.muted.state` (boolean, required)

  - `comments.user.relationship.muted.expiresAt` (string,null)
    Example: "2022-03-10T16:15:50Z"

  - `comments.user.relationship.note` (string,null)
    Viewer's private note about the target

  - `comments.user.entityType` (string)
    Entity type: USER, BOT, APPLICATION, GROUP_CHANNEL
    Enum: "USER", "BOT", "APPLICATION", "GROUP_CHANNEL"

  - `comments.user.appMeta` (object)
    Structured metadata (channel flags, channel color, etc.)

  - `comments.user.groupId` (string,null)
    Group ID if this is a group channel or group user.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.user.groupPrivacy` (string,null)
    Privacy of this channel in a group.
    Enum: "PUBLIC", "PRIVATE"

  - `comments.user.groupUserName` (string,null)
    Name of the channel inside a group

  - `comments.user.actorType` (string,null)
    Whether this user is a person, application or a service
    Enum: "Application", "Group", "Organization", "Person", "Service"

  - `comments.user.deleted` (boolean,null)

  - `comments.user.groupAvatar` (object,null)
    Group avatar (only present for group channels)

  - `comments.user.groupAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.user.groupAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.user.groupAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.user.groupAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.user.groupAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `comments.user.groupAvatar.meta` (object)
    Meta data

  - `comments.user.groupAvatar.meta.blurhash` (string,null)

  - `comments.user.groupAvatar.meta.name` (string,null)

  - `comments.user.groupAvatar.meta.altText` (string,null)

  - `comments.user.groupAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `comments.user.groupAvatar.files` (array, required)
    List of all the files this upload has

  - `comments.user.groupAvatar.files.uri` (string,null, required)
    Full url of the file

  - `comments.user.groupAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.user.groupAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `comments.user.groupAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `comments.user.groupAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `comments.user.groupAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `comments.user.groupAvatar.files.meta.width` (integer,null)
    Media width

  - `comments.user.groupAvatar.files.meta.height` (integer,null)
    Media height

  - `comments.user.groupAvatar.files.meta.codec` (string,null)
    Video codec

  - `comments.user.groupAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `comments.user.groupAvatar.files.size` (integer, required)
    File size in bytes

  - `comments.user.groupAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `comments.user.groupAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `comments.user.groupAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `comments.user.groupAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `comments.user.groupAvatar.error` (string,null)
    Upload processing error

  - `comments.user.groupAvatar.cached` (boolean)
    true if cached

  - `comments.user.groupAvatar.logs` (string,null)
    Logs

  - `comments.user.groupAvatar.remote` (boolean)
    true if this upload is remote

  - `comments.user.groupAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `comments.user.groupAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `comments.user.groupName` (string,null)
    Group name (only present for group channels)

  - `comments.user.groupDisplayName` (string,null)
    Group display name (only present for group channels)

  - `comments.user.followApproval` (string, required)
    Follow approval mode: AUTO_APPROVE, MANUALLY_APPROVES, or UNKNOWN
    Enum: "AUTO_APPROVE", "MANUALLY_APPROVES", "UNKNOWN"

  - `comments.user.groupPrimary` (boolean,null)
    true if this is primary group channel.

  - `comments.user.groupAutoSubscribe` (boolean,null)
    true if this is auto-subscribe group channel.

  - `comments.user.channel` (boolean, required)
    Whether this is a channel or a user. Deprecated: use 'entityType' instead.

  - `comments.uploads` (array,null)
    Attachments (populated)

  - `comments.uploads.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.uploads.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.uploads.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.uploads.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.uploads.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `comments.uploads.meta` (object)
    Meta data

  - `comments.uploads.meta.blurhash` (string,null)

  - `comments.uploads.meta.name` (string,null)

  - `comments.uploads.meta.altText` (string,null)

  - `comments.uploads.size` (integer, required)
    Size in bytes of all the files in this upload

  - `comments.uploads.files` (array, required)
    List of all the files this upload has

  - `comments.uploads.files.uri` (string,null, required)
    Full url of the file

  - `comments.uploads.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `comments.uploads.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `comments.uploads.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `comments.uploads.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `comments.uploads.files.meta.duration` (number,null)
    Video duration in seconds

  - `comments.uploads.files.meta.width` (integer,null)
    Media width

  - `comments.uploads.files.meta.height` (integer,null)
    Media height

  - `comments.uploads.files.meta.codec` (string,null)
    Video codec

  - `comments.uploads.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `comments.uploads.files.size` (integer, required)
    File size in bytes

  - `comments.uploads.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `comments.uploads.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `comments.uploads.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `comments.uploads.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `comments.uploads.error` (string,null)
    Upload processing error

  - `comments.uploads.cached` (boolean)
    true if cached

  - `comments.uploads.logs` (string,null)
    Logs

  - `comments.uploads.remote` (boolean)
    true if this upload is remote

  - `comments.uploads.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `comments.uploads.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

## Response 403 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation

## Response 404 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation


